<?php

namespace App\Entity\Bo;


use App\Model\Business\Application;
use App\Model\Report\BigDevice;

class ReportEventBo
{
    /**
     * 项目ID
     * @var int
     */
    private int $projectId;

    /**
     * 应用ID
     * @var int
     */
    private int $appId;

    /**
     * 渠道
     * @var string
     */
    private string $channel;

    /**
     * 用来获取上报配置参数的渠道
     * @var string
     */
    private string $reportConfigChannel = '';

    /**
     * 版本号
     * @var string
     */
    private string $version;

    /**
     * 包名
     * @var string
     */
    private string $packageName;

    private string $oaid = '';

    private string $ua = '';

    private string $ip = '';

    /**
     * 手机型号
     * @var string
     */
    private string $model = '';

    /**
     * 设备开机时间
     * @var string
     */
    private string $deviceStartTime = '';

    /**
     * 事件类型
     * @var int
     */
    private int $eventType;

    /**
     * 上报来源
     * @var string
     */
    private string $reportSource = "1";

    /**
     * 归因渠道
     * @var int
     */
    private int $ascribeChannelType = 0;

    /**
     * 归因渠道号
     * @var string
     */
    private string $ascribeChannel = '';

    /**
     * 是否归因商店
     * @var int
     */
    private int $isAscribeStore = -1;

    /**
     * 当是vivo上报时，需要用到该值
     * @var string
     */
    private string $vivoAccessToken = "";

    /**
     * vivo账户id
     * 当时vivo上报时，需要用到该值
     * @var string
     */
    private string $vivoAdvertiserId = "";

    /**
     * vivo数据源id
     * @var string
     */
    private string $vivoSrcId = "";

    /**
     * 小米AppId
     * 当小米商店上报时，需用该值
     * @var string
     */
    private string $xiaomiAppId = "";

    /**
     * 小米账户ID
     * 当小米商店上报时，需用该值
     * @var string
     */
    private string $xiaomiCustomerId = "";

    /**
     * 小米签名秘钥
     * 当小米商店上报时，需用该值
     * @var string
     */
    private string $xiaomiSignKey = "";

    /**
     * 小米加密秘钥
     * 当小米商店上报时，需用该值
     * @var string
     */
    private string $xiaomiEncryptKey = "";

    /**
     * 华为API客户端APPID
     * 当华为上报时，需用该值
     * @var string
     */
    private string $huaweiAppId = "";

    /**
     * 华为API客户端ID
     * 当华为上报时，需用该值
     * @var string
     */
    private string $huaweiClientId = "";

    /**
     * 华为API客户端密钥
     * 当华为上报时，需用该值
     * @var string
     */
    private string $huaweiClientSecret = "";

    /**
     * 当上报需要用到关键行为阈值时设置
     * @var int
     */
    private int $cpmComplete = 0;

    /**
     * 应用 application 表实体
     * @var ?object
     */
    private ?Application $app = null;

    /**
     * 总cpm
     * @var int
     */
    private int $totalCpm = 0;

    private ?BigDevice $bigDevice = null;

    private ?object $channelDevice = null;

    private ?object $adPlan = null;

    private ?object $adCreative = null;

    private ?object $adAccount = null;

    private ?object $adAccountDynamicReportConfig = null;

    private ?object $adPlanDynamicReportLog = null;

    /**
     * 计划ID
     * @var string
     */
    private string $ascribeAdPlanId = "";

    /**
     * 创意ID
     * @var string
     */
    private string $ascribeAdId = "";

    /**
     * 行为回传类型
     * @var int
     */
    private int $behaviorReturnType = 0;

    /**
     * 上报查找 device 的方式
     * @var int
     */
    private int $reportFindDeviceType = 0;

    /**
     * 上报方案配置
     * @var array
     */
    private array $reportConfig = [];

    public function setProjectId(int $projectId)
    {
        $this->projectId = $projectId;
    }

    public function getProjectId(): int
    {
        return $this->projectId;
    }

    public function setAppClient(int $appClient)
    {
        $this->appClient = $appClient;
    }

    public function getAppClient(): int
    {
        return $this->appClient;
    }

    /**
     * @return string
     */
    public function getChannel(): string
    {
        return $this->channel;
    }

    /**
     * @param string $channel
     */
    public function setChannel(string $channel): void
    {
        $this->channel = $channel;
    }

    /**
     * @return string
     */
    public function getVersion(): string
    {
        return $this->version;
    }

    /**
     * @param string $version
     */
    public function setVersion(string $version): void
    {
        $this->version = $version;
    }

    /**
     * @return string
     */
    public function getPackageName(): string
    {
        return $this->packageName;
    }

    /**
     * @param string $packageName
     */
    public function setPackageName(string $packageName): void
    {
        $this->packageName = $packageName;
    }

    /**
     * @return string
     */
    public function getOaid(): string
    {
        return $this->oaid;
    }

    /**
     * @param string $oaid
     */
    public function setOaid(string $oaid): void
    {
        $this->oaid = $oaid;
    }

    /**
     * @return int
     */
    public function getEventType(): int
    {
        return $this->eventType;
    }

    /**
     * @param int $eventType
     */
    public function setEventType(int $eventType): void
    {
        $this->eventType = $eventType;
    }

    /**
     * @return int
     */
    public function getAppId(): int
    {
        return $this->appId;
    }

    /**
     * @param int $appId
     */
    public function setAppId(int $appId): void
    {
        $this->appId = $appId;
    }

    /**
     * @return string
     */
    public function getVivoAccessToken(): string
    {
        return $this->vivoAccessToken;
    }

    /**
     * @param string $vivoAccessToken
     */
    public function setVivoAccessToken(string $vivoAccessToken): void
    {
        $this->vivoAccessToken = $vivoAccessToken;
    }

    /**
     * @return string
     */
    public function getVivoAdvertiserId(): string
    {
        return $this->vivoAdvertiserId;
    }

    /**
     * @param string $vivoAdvertiserId
     */
    public function setVivoAdvertiserId(string $vivoAdvertiserId): void
    {
        $this->vivoAdvertiserId = $vivoAdvertiserId;
    }

    /**
     * @return string
     */
    public function getVivoSrcId(): string
    {
        return $this->vivoSrcId;
    }

    /**
     * @param string $vivoSrcId
     */
    public function setVivoSrcId(string $vivoSrcId): void
    {
        $this->vivoSrcId = $vivoSrcId;
    }

    /**
     * @return string
     */
    public function getXiaomiAppId(): string
    {
        return $this->xiaomiAppId;
    }

    /**
     * @param string $xiaomiAppId
     */
    public function setXiaomiAppId(string $xiaomiAppId): void
    {
        $this->xiaomiAppId = $xiaomiAppId;
    }

    /**
     * @return string
     */
    public function getXiaomiCustomerId(): string
    {
        return $this->xiaomiCustomerId;
    }

    /**
     * @param string $xiaomiCustomerId
     */
    public function setXiaomiCustomerId(string $xiaomiCustomerId): void
    {
        $this->xiaomiCustomerId = $xiaomiCustomerId;
    }

    /**
     * @return string
     */
    public function getXiaomiSignKey(): string
    {
        return $this->xiaomiSignKey;
    }

    /**
     * @param string $xiaomiSignKey
     */
    public function setXiaomiSignKey(string $xiaomiSignKey): void
    {
        $this->xiaomiSignKey = $xiaomiSignKey;
    }

    /**
     * @return string
     */
    public function getXiaomiEncryptKey(): string
    {
        return $this->xiaomiEncryptKey;
    }

    /**
     * @param string $xiaomiEncryptKey
     */
    public function setXiaomiEncryptKey(string $xiaomiEncryptKey): void
    {
        $this->xiaomiEncryptKey = $xiaomiEncryptKey;
    }

    /**
     * @return string
     */
    public function getHuaweiAppId(): string
    {
        return $this->huaweiAppId;
    }

    /**
     * @param string huaweiAppId
     */
    public function setHuaweiAppId(string $huaweiAppId): void
    {
        $this->huaweiAppId = $huaweiAppId;
    }

    /**
     * @return string
     */
    public function getHuaweiClientId(): string
    {
        return $this->huaweiClientId;
    }

    /**
     * @param string $huaweiClientId
     */
    public function setHuaweiClientId(string $huaweiClientId): void
    {
        $this->huaweiClientId = $huaweiClientId;
    }

    /**
     * @return string
     */
    public function getHuaweiClientSecret(): string
    {
        return $this->huaweiClientSecret;
    }

    /**
     * @param string $huaweiClientSecret
     */
    public function setHuaweiClientSecret(string $huaweiClientSecret): void
    {
        $this->huaweiClientSecret = $huaweiClientSecret;
    }

    /**
     * @return int
     */
    public function getCpmComplete(): int
    {
        return $this->cpmComplete;
    }

    /**
     * @param int $cpmComplete
     */
    public function setCpmComplete(int $cpmComplete): void
    {
        $this->cpmComplete = $cpmComplete;
    }

    /**
     * @return ?object
     */
    public function getApp(): ?object
    {
        return $this->app;
    }

    /**
     * @param object $app
     */
    public function setApp(Application $app): void
    {
        $this->app = $app;
    }

    /**
     * @return int
     */
    public function getTotalCpm(): int
    {
        return $this->totalCpm;
    }

    /**
     * @param int $totalCpm
     */
    public function setTotalCpm(int $totalCpm): void
    {
        $this->totalCpm = $totalCpm;
    }

    /**
     * @return string
     */
    public function getModel(): string
    {
        return $this->model;
    }

    /**
     * @param string $model
     */
    public function setModel(string $model): void
    {
        $this->model = $model;
    }

    /**
     * @return string
     */
    public function getDeviceStartTime(): string
    {
        return $this->deviceStartTime;
    }

    /**
     * @param string $deviceStartTime
     */
    public function setDeviceStartTime(string $deviceStartTime): void
    {
        $this->deviceStartTime = $deviceStartTime;
    }

    /**
     * @return string
     */
    public function getReportConfigChannel(): string
    {
        return $this->reportConfigChannel;
    }

    /**
     * @param string $reportConfigChannel
     */
    public function setReportConfigChannel(string $reportConfigChannel): void
    {
        $this->reportConfigChannel = $reportConfigChannel;
    }

    /**
     * @return object|null
     */
    public function getBigDevice(): ?BigDevice
    {
        return $this->bigDevice;
    }

    /**
     * @param object|null $bigDevice
     */
    public function setBigDevice(?BigDevice $bigDevice): void
    {
        $this->bigDevice = $bigDevice;
    }

    /**
     * @return string
     */
    public function getUa(): string
    {
        return $this->ua;
    }

    /**
     * @param string $ua
     */
    public function setUa(string $ua): void
    {
        $this->ua = $ua;
    }

    /**
     * @return string
     */
    public function getIp(): string
    {
        return $this->ip;
    }

    /**
     * @param string $ip
     */
    public function setIp(string $ip): void
    {
        $this->ip = $ip;
    }

    /**
     * @return string
     */
    public function getReportSource(): string
    {
        return $this->reportSource;
    }

    /**
     * @param string $reportSource
     */
    public function setReportSource(string $reportSource): void
    {
        $this->reportSource = $reportSource;
    }

    public function getBehaviorReturnType(): int
    {
        return $this->behaviorReturnType;
    }


    public function setBehaviorReturnType(int $behaviorReturnType): void
    {
        $this->behaviorReturnType = $behaviorReturnType;
    }

    /**
     * @param int $ascribeChannelType
     */
    public function getAscribeChannelType(): int
    {
        return $this->ascribeChannelType;
    }

    /**
     * @param string $ascribeChannelType
     */
    public function setAscribeChannelType(int $ascribeChannelType): void
    {
        $this->ascribeChannelType = $ascribeChannelType;
    }

    /**
     * @param string $ascribeChannel
     */
    public function getAscribeChannel(): string
    {
        return $this->ascribeChannel;
    }

    /**
     * @param string $ascribeChannel
     */
    public function setAscribeChannel(string $ascribeChannel): void
    {
        $this->ascribeChannel = $ascribeChannel;
    }

    /**
     * @param int $isAscribeStore
     */
    public function getIsAscribeStore(): int
    {
        return $this->isAscribeStore;
    }

    /**
     * @param int $isAscribeStore
     */
    public function setIsAscribeStore(int $isAscribeStore): void
    {
        $this->isAscribeStore = $isAscribeStore;
    }

    /**
     * @param string $ascribeAdPlanId
     */
    public function getAscribeAdPlanId(): string
    {
        return $this->ascribeAdPlanId;
    }

    /**
     * @param string $ascribeAdPlanId
     */
    public function setAscribeAdPlanId(string $ascribeAdPlanId): void
    {
        $this->ascribeAdPlanId = $ascribeAdPlanId;
    }

    /**
     * @param string $ascribeAdId
     */
    public function getAscribeAdId(): string
    {
        return $this->ascribeAdId;
    }

    /**
     * @param string $ascribeAdId
     */
    public function setAscribeAdId(string $ascribeAdId): void
    {
        $this->ascribeAdId = $ascribeAdId;
    }

    /**
     * @return object|null
     */
    public function getAdPlan(): ?object
    {
        return $this->adPlan;
    }

    /**
     * @param object|null $adPlan
     */
    public function setAdPlan(?object $adPlan): void
    {
        $this->adPlan = $adPlan;
    }

    /**
     * @return object|null
     */
    public function getAdCreative(): ?object
    {
        return $this->adCreative;
    }

    /**
     * @param object|null $adCreative
     */
    public function setAdCreative(?object $adCreative): void
    {
        $this->adCreative = $adCreative;
    }

    /**
     * @param object|null $channelDevice
     */
    public function setChannelDevice(?object $channelDevice): void
    {
        $this->channelDevice = $channelDevice;
    }

    /**
     * @return object|null
     */
    public function getAdAccount(): ?object
    {
        return $this->adAccount;
    }

    /**
     * @param object|null $adCreative
     */
    public function setAdAccount(?object $adAccount): void
    {
        $this->adCreative = $adAccount;
    }

    /**
     * @return object|null
     */
    public function getAdAccountDynamicReportConfig(): ?object
    {
        return $this->adAccountDynamicReportConfig;
    }

    /**
     * @param object|null $adAccountDynamicReportConfig
     */
    public function setAdAccountDynamicReportConfig(?object $adAccountDynamicReportConfig): void
    {
        $this->adAccountDynamicReportConfig = $adAccountDynamicReportConfig;
    }

    /**
     * @return object|null
     */
    public function getAdPlanDynamicReportLog(): ?object
    {
        return $this->adAccountDynamicReportConfig;
    }

    /**
     * @param object|null $adPlanDynamicReportLog
     */
    public function setAdPlanDynamicReportLog(?object $adPlanDynamicReportLog): void
    {
        $this->adPlanDynamicReportLog = $adPlanDynamicReportLog;
    }


    /**
     * @return int
     */
    public function getReportFindDeviceType(): int
    {
        return $this->reportFindDeviceType;
    }

    /**
     * @param int $reportFindDeviceType
     */
    public function setReportFindDeviceType(int $reportFindDeviceType): void
    {
        $this->reportFindDeviceType = $reportFindDeviceType;
    }

    /**
     * @return array
     */
    public function getReportConfig(): array
    {
        return $this->reportConfig;
    }

    /**
     * @param array $reportConfig
     */
    public function setReportConfig(array $reportConfig): void
    {
        $this->reportConfig = $reportConfig;
    }
}
